package com.gnerv.battle.boot.module.base.repository.mapper;

import com.gnerv.battle.boot.module.base.model.dto.NoticeDTO;
import com.gnerv.battle.boot.module.base.model.entity.Notice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author Gnerv LiGen
 */
@Mapper
public interface NoticeMapper {

    int insert(@Param(value = "notice") Notice notice);

    int deleteByUkId(@Param(value = "ukId") String ukId);

    int updateByUkId(@Param(value = "notice") Notice notice);

    NoticeDTO selectByUkId(@Param(value = "ukId") String ukId);

    List<NoticeDTO> listByTitle(@Param(value = "title") String title,
                                @Param(value = "limitStart") Integer limitStart,
                                @Param(value = "limitSize") Integer limitSize);

    List<NoticeDTO> listByAccountUkId(@Param(value = "accountUkId") String accountUkId,
                                      @Param(value = "limitStart") Integer limitStart,
                                      @Param(value = "limitSize") Integer limitSize);

    List<NoticeDTO> listReceive(@Param(value = "accountUkId") String accountUkId,
                                @Param(value = "status") String status,
                                @Param(value = "limitStart") Integer limitStart,
                                @Param(value = "limitSize") Integer limitSize);

    int countByTitle(@Param(value = "title") String title);

    int countByAccountUkId(@Param(value = "accountUkId") String accountUkId);

    int countReceive(@Param(value = "accountUkId") String accountUkId,
                     @Param(value = "status") String status);

    int send(@Param(value = "noticeUkId") String noticeUkId,
             @Param(value = "accountUkIdList") List<String> accountUkIdList,
             @Param(value = "status") String status,
             @Param(value = "gmtCreate") Long gmtCreate,
             @Param(value = "gmtModified") Long gmtModified);

    int updateReceiveStatus(@Param(value = "noticeUkId") String noticeUkId,
                            @Param(value = "accountUkId") String accountUkId,
                            @Param(value = "status") String status);

    NoticeDTO selectReceiveByAccountUkIdAndNoticeUkId(@Param(value = "accountUkId") String accountUkId,
                                                      @Param(value = "noticeUkId") String noticeUkId);
}




